home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 126-150 / apd135 / space maths.amos / space maths.amosSourceCode < prev    next >
AMOS Source Code  |  1990-08-11  |  6KB  |  212 lines

  1. Screen Open 0,320,200,16,Lowres
  2. Global LEVEL,NAME$,OP$,A,B,C,X,ANS,SCORE,XL,RN,RN1,GOES1,FLAG,K
  3. TITLE
  4. STAR:
  5. GNAME
  6. SMATHS
  7. End 
  8. Procedure TITLE
  9. Hide On 
  10. Load Iff "smaths/title.iff",1
  11. Load "smaths/music.abk"
  12. Load "smaths/sprites.abk"
  13. Music 1
  14. Pen 3 : Paper 0
  15. Locate 12,15
  16. Print "PRESS ANY KEY"
  17. Wait Key 
  18. Music Stop 
  19. Load Iff "smaths/game.iff",1
  20. End Proc
  21. Procedure GNAME
  22. '*************** GET ALL USER INFORMATION (NAME,AGE,NUMBER OF SUMS) *******
  23. Say "                                                                  "
  24. Pen 15 : Paper 0
  25. Locate 2,4 : Print "PLEASE PRINT"
  26. Locate 2,6 : Print "YOUR NAME "
  27. Locate 2,8 : Input NAME$
  28. C$=Left$(NAME$,1)
  29. C$=Upper$(C$)
  30. Left$(NAME$,1)=C$
  31. NAME$=NAME$+"."
  32. TALK$="hello "+NAME$
  33. Say TALK$
  34. BLANK
  35. AGAIN2:
  36. Say "how old are you."
  37. Locate 2,4 : Print "How old are"
  38. Locate 2,6 : Print "you "
  39. Locate 2,8 : Print " ";
  40. Input AGE$ : HOTKEY[AGE$] : If FLAG=1 Then Goto AGAIN2
  41. AGE=K
  42. If AGE<6 Then LEVEL=1
  43. If AGE>5 and AGE<9 Then LEVEL=2
  44. If AGE>8 and AGE<13 Then LEVEL=3
  45. If AGE>12 and AGE<16 Then LEVEL=4
  46. If AGE>15 Then LEVEL=5
  47. BLANK
  48. AGAIN3:
  49. Say "how many sums would you like.         "
  50. Locate 2,4 : Print "How many sums"
  51. Locate 2,6 : Print "Do you want"
  52. Locate 2,10 : Print " ";
  53. Input GOES1$ : HOTKEY[GOES1$] : If FLAG=1 Then Goto AGAIN3
  54. GOES1=K
  55. End Proc
  56. Procedure BLANK
  57. '************************************************
  58. '**************** ERASES THE BLACKBOARD *********
  59. '************************************************
  60. For Z=4 To 29
  61. Locate 2,Z
  62. Print "             "
  63. Next Z
  64. End Proc
  65. Procedure RANDOM
  66. '************ Get a Random Operator ***************
  67. Randomize Timer
  68. OP$="" : X=0
  69. While OP$=""
  70. X=Rnd(3)+1
  71. If X=1 Then OP$=" -"
  72. If X=2 Then OP$=" +"
  73. If X=3 and LEVEL>2 Then OP$=" *"
  74. If X=4 and LEVEL>2 Then OP$=" /"
  75. Wend 
  76. '
  77. '********* Get RANDOM NUMBERS For SUMS ************
  78. REP:
  79. If LEVEL=1 Then A=Rnd(4)+1 : B=Rnd(4)+1
  80. If LEVEL=2 Then A=Rnd(5)+5 : B=Rnd(5)+5
  81. If LEVEL=3 Then A=Rnd(40)+10 : B=Rnd(40)+10
  82. If LEVEL=4 Then A=Rnd(90)+10 : B=Rnd(90)+10
  83. If LEVEL=5 Then A=Rnd(1000)+10 : B=Rnd(100)+10
  84. If OP$=" -" and A<B Then Goto REP
  85. If OP$=" /" Then DIV
  86. End Proc
  87. Procedure DIV
  88. '**************** Routine to Ensure Number A is Divisable by number B without any remainder
  89. AGAIN:
  90. A=Rnd(143)+1 : B=Rnd(11)+1
  91. D=A mod B
  92. If D<>0 Then Goto AGAIN
  93. End Proc
  94. Procedure SCORE
  95. '************************************************
  96. '********** PRINT SCORE TO SCREEN ***************
  97. '************************************************
  98. Locate 2,29 : Print "SCORE ";SCORE
  99. End Proc
  100. Procedure SCORECHECK
  101. '************************************************
  102. '********* CHECKS SCORE FOR WHEN TO GET ALIEN ***
  103. '************************************************
  104. SCCH=SCORE mod RN1
  105. If SCCH=0 Then RN=Rnd(200) : SHOT
  106. End Proc
  107. Procedure SMATHS
  108. '************************************************* 
  109. '*********** MAIN MATHS ROUTINE ****************** 
  110. '************************************************* 
  111. BLANK
  112. SCORE=0 : RN1=5 : GOES=0 : Rem ****** RESETS GAME VARIABLES 
  113. BEG:
  114. GOES=GOES+1 : If GOES=GOES1+1 Then FIN : Goto STAR
  115. RANDOM
  116. If X=1 Then C=A-B
  117. If X=2 Then C=A+B
  118. If X=3 Then C=A*B
  119. If X=4 Then C=A/B
  120. '************ PRINT SUMS TO SCREEN ****************
  121. AGAIN1:
  122. Locate 2,4
  123. Print A;OP$;B
  124. Locate 2,6
  125. Print "What is the"
  126. Locate 2,8
  127. '**************************************************
  128. Input "Answer = ";ANS$ : HOTKEY[ANS$] : If FLAG=1 Then Goto AGAIN1 : Rem *** IF NOT A NUMBER KEY PRESSED REPRINT SUM  
  129. If K=C Then Locate 2,10 : Print "CORRECT" : Wait 50 : BLANK : SCORE=SCORE+1 : SCORE : SCORECHECK : Goto BEG
  130. Locate 2,16 : Print "THAT IS WRONG"
  131. Locate 2,18 : Print "THE CORRECT "
  132. Locate 2,20 : Print "ANSWER WAS::"
  133. Locate 2,22 : Print "   ";C
  134. Locate 2,24 : Print "PRESS A KEY" : Wait Key : BLANK : Goto BEG : 
  135. End Proc
  136. Procedure HOTKEY[K$]
  137. '******************* ENSURES ONLY NUMBER KEYS ARE PRESSED **************** 
  138. FLAG=0
  139. If Asc(K$)<48 or Asc(K$)>57 Then Locate 2,10 : BLANK : FLAG=1 : Rem****IF ANSWER ISN~T A NUMBER WAIT *****'
  140. K=Val(K$) : Rem**** CHANGE STRING VARIABLE TO NUMBER VARIABLE FOR USE IN MAIN PROG (SMATHS)
  141. End Proc[K]
  142. Procedure SHOT
  143. '*************************************************** 
  144. '**************    GRAPHICS GAME    **************** 
  145. '*************************************************** 
  146. Say "shoot the alien for extra bownus poynts.                       "
  147. Hide On 
  148. Get Sprite Palette %11111111111111110000000000000000
  149. Make Mask 
  150. XL=260 : SX=435 : SY=50 : DR=1 : Y=280 : L=3
  151. REP1:
  152.  If Jleft(1) Then XL=XL-1
  153.  If Jright(1) Then XL=XL+1
  154.  Sprite 0,XL,280,1
  155.  If XL<260 Then XL=260
  156.  If XL>435 Then XL=435
  157.  Sprite 4,SX,SY,3
  158.  For COUNT=1 To RN : Next COUNT
  159.  If DR=1 Then Dec SX
  160.  If DR=0 Then Inc SX
  161.  If SX<261 Then DR=0
  162.  If SX>435 Then DR=1
  163.  If Fire(1)=-1 Then SARA=1 : Shoot 
  164.  If SARA<>1 Then Goto REP1
  165. Sprite 2,XL,Y,2
  166. C=Sprite Col(4)
  167. If C=-1 Then Boom : Sprite Off 2 : Sprite 4,XL,SY,4 : Wait 50 : Sprite Off 4 : SCORE=SCORE+10 : SCORE : Goto SKIP1
  168. Dec Y
  169. If Y<>26 Then Goto REP1
  170. SKIP1:
  171.  SARA=0 : Y=280 : Dec L
  172. If L<>0 Then Goto REP1
  173. Sprite Off 
  174. RN1=Rnd(10)+5
  175. End Proc
  176. Procedure FIN
  177. '************************************************
  178. '******* GAME OVER AND START AGAIN    ***********
  179. '************************************************
  180. BLANK
  181. Locate 2,4 : Print "Your game"
  182. Locate 2,6 : Print "Is over."
  183. Locate 2,8 : Print "You answered"
  184. Locate 2,10 : Print "";GOES1
  185. Locate 2,12 : Print " Questions"
  186. Locate 2,14 : Print "And scored"
  187. Locate 2,16 : Print "   ";SCORE
  188. Locate 2,18 : Print "PRESS 'Y'"
  189. Locate 2,20 : Print "TO PLAY AGAIN"
  190. Locate 2,22 : Print "OR 'N' TO END"
  191. Do 
  192. N=Key State(54) : If N=-1 Then End 
  193. Y=Key State(21) : If Y=-1 Then Exit 
  194. Loop 
  195. Clear Key 
  196. BLANK
  197. End Proc
  198. '
  199. '*********************** VARIABLE LIST ***************** 
  200. 'NAME$ 
  201. 'AGE 
  202. 'LEVEL 
  203. 'op$          ****** Operator e.g. - + * / 
  204. 'a            ****** first number
  205. 'b            ****** second  
  206. 'c            ****** correct answer
  207. 'ans          ****** users answer
  208. 'scch         ****** determines when to go to graphic game 
  209. 'rn1          ****** determines when to go to graphic game also
  210. 'rn           ****** holds s random speed factor for alien 
  211. 'goes1        ****** holds how many goes you want  
  212. 'goes         ****** holds how many goes you've had